#include "signal_test.h"
#include "ui_signal_test.h"
#include <QMessageBox>

signal_test::signal_test(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::signal_test)
{
    ui->setupUi(this);

    connect(this, SIGNAL(mySignal()), this, SLOT(mySlot()));
    connect(this, SIGNAL(mySignal(int)), this, SLOT(mySlot2(int)));//一个槽函数可以和多个信号相连；一个信号也可以和多个槽函数相连；信号和槽的形参类型必须匹配；槽函数参数没有初始值
}

signal_test::~signal_test()
{
    delete ui;
}

void signal_test::on_pushButton_clicked()
{
    qDebug("pushButton");
    emit mySignal(10);//emit发送信号
    qDebug("after emit mysignal");
}

/**
 * @brief signal_test::on_pushButton_pressed
 *
 * 1、槽函数也是函数
 * 2、槽函数可以跟信号关联
 * 3、关联方式：靠名字关联（只有UI界面上的控件可以使用这种方式，用connenct函数关联，直接在UI设计界面上关联）
 *
 */

void signal_test::on_pushButton_pressed()
{
    qDebug("pushButton pressed");
}

void signal_test::on_pushButton_released()
{
    qDebug("pushButton released");
}
/**
 * @brief signal_test::on_dial_valueChanged
 *
 * @param value
 *
 * 1、信号是函数
 * 2、信号不需要手动写函数体，只需声明就可以
 * 3、信号没有返回值
 * 4、信号可以有参数
 * 5、信号可以重载
 *
 */

void signal_test::on_dial_valueChanged(int value)
{
    qDebug("value : %d", value);
    ui->lcdNumber->display(value);
}

void signal_test::on_checkBox_clicked()
{
    qDebug("check");
}

void signal_test::on_commandLinkButton_destroyed()
{
    qDebug("destroyed");
}

void signal_test:: mySlot()
{
    qDebug("mySlot");
    //QMessageBox::information(this, NULL, "mySlot");
}

void signal_test:: mySlot2(int a)
{
    qDebug("mySlot2 : %d", a);
}
